热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

简便性|存量_ElasticsearchElasticsearch8.X;Elasticsearch8.X集群

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Elasticsearch-Elasticsearch8.X;Elasticsearch8.X集群相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Elasticsearch - Elasticsearch 8.X;Elasticsearch 8.X集群相关的知识,希望对你有一定的参考价值。



阅读本文前可先参考

Elasticsearch - Elasticsearch详解;安装部署(一)_MinggeQingchun的博客-CSDN博客

Elasticsearch - Elasticsearch集群Cluster(三)_MinggeQingchun的博客-CSDN博客




一、Elasticsearch 8.X 

距 2019 年 Elasticsearch 上一大版本 7.0 发布至今已经过去了 3 年

2022 年 2 月 11 日,Elasticsearch 发布了全新的 8.0 正式版本,新版本中通过改进 Elasticsearch 的矢量搜索功能、对现代自然语言处理模型的原生支持、不断简化的数据上线过程,以及精简的安全防护体验,在速度、扩展幅度、相关 性和简便性方面,让搜索引擎技术迎来了一个全新的时代!


Elasticsearch 新特性

1、减少内存堆使用,完全支持 ARM 架构,引入全新的方式以使用更少的存储空间,从而让每个节点托管更多的数据

2、降低查询开销,在大规模部署中成效尤为明显

3、提高日期直方图和搜索聚合的速度,增强了页面缓存的性能,并创建了一个新的 “pre-filter”搜索短语

在最新发布的 8.0 版本中,增加和完善了很多新的功能

4、增加对自然语言处理 (NLP) 模型的原生支持,让矢量搜索功能更容易实现,让客户和员工能够使用他们自己的文字和语言来搜索并收到高度相关的结果

5、直接在 Elasticsearch 中执行命名实体识别、情感分析、文本分类等,而无需使用额外 的组件或进行编码

6、Elasticsearch 8.0 基于 Lucene 9.0 开发的,那些利用现代 NLP 的搜索体验,都可以借助(新增的)对近似最近邻搜索的原生支持,快速且大规模地实现。通过 ANN,可以快速并高效地将基于矢量的查询与基于矢量的文档语料库(无论是小语料库、大语料库还是巨型语料库)进行比较

7、可以直接在 Elasticsearch 中使用 PyTorch Machine Learning 模型(如 BERT),并在Elasticsearch 中原生使用这些模型执行推理



二、Elasticsearch 8.X 安装使用

(一)Elasticsearch 与 Java版本选择推荐及总结


Elasticsearch 和 JVM 支持矩阵

支持矩阵 | Elastic


Elasticsearch(5.x、6.x、7.x、8.x)的兼容性

支持矩阵 | Elastic


1、ES 7.x 及之前版本,选择 Java 8

2、ES 8.x 及之后版本,选择 Java 17 或者 Java 18,建议 Java 17,因为对应版本的 Logstash 不支持 Java 18

(1)对于ES 8.0:Java版本仅支持 Java 17,别无选择

(2)对于ES 8.1及以上版本:支持Java 17 以及 Java 18,建议 Java 17,因为对应版本的Logstash 不支持 Java 18

3、Java 9、Java 10、Java 12 和 Java 13 均为短期版本,不推荐使用

4、M1(Arm) 系列 Mac 用户建议选择 ES 7.8.x 以上版本,因为考虑到 ELK 不同产品自身兼容性,7.8.x以上版本原生支持 Arm 原生 JDK


(二)Java 17安装下载

Elasticsearch是使用Java开发的,8.1版本的ES需要JDK17及以上版本。默认安装包中带有JDK环境,如果系统配置ES_JAVA_HOME环境变量,那么会采用系统配置的.JDK。如果没有配置该环境变量,ES会使用自带捆绑的JDK。虽然自带的JDK是 ES软件推荐的Java版本,但一般建议使用系统配置的JDK 


Java官网地址:

Java Software | Oracle

Java 软件 | Oracle 中国


Java下载地址:

Java Downloads | Oracle


Java所有版本下载地址:

JDK Release Notes

可参考

Java--Java版本和JDK版本_MinggeQingchun的博客-CSDN博客_java最新版本是多少



(三)Elasticsearch8.1 集群安装下载

注:



1、因博主未升级JDK1.8至JDK17、JDK18;但是ES7.16.X是能兼容JDK1.8和JDK17、JDK18的,因此以安装ES7.16.0为例


2、博主通过虚拟机VMware Workstations仅安装2台配置ES集群


可参考

Elasticsearch - Elasticsearch集群Cluster(三)_MinggeQingchun的博客-CSDN博客


Elasticsearch官网地址:

免费且开放的搜索:Elasticsearch、ELK 和 Kibana 的开发者 | Elastic


Elasticsearch下载地址: 

Past Releases of Elastic Stack Software | Elastic



1、集群搭建规划

准备三台 linux 虚拟机,用于配置 Elasticsearch 集群;启动集群后


主机名esLinux1esLinux2
进程名Elasticsearch (es-node-1)Elasticsearch (es-node-2)

2、上传压缩包,解压

将 elasticsearch-7.16.0-linux-x86_64.tar.gz 上传至 目标目录 /opt/software

执行解压缩命令 

tar -zxvf elasticsearch-7.16.0-linux-x86_64.tar.gz -C /opt/software/

目录结构如下


3、配置JDK

当前安装Elasticsearch版本为7.16.0,自带JDK,无需配置Java环境


4、创建 linux 新用户 es, 数据文件,证书目录, 并修改 Elasticsearch 文件拥有者

注:

因为安全问题,Elasticsearch 不允许 root 用户直接运行,所以要创建新用户,在 root 用户中创建新用户

# 新增 es 用户
useradd es
# 为 es 用户设置密码
passwd es
# 创建数据文件目录
mkdir /opt/software/elasticsearch-7.16.0/data
# 创建证书目录
mkdir /opt/software/elasticsearch-7.16.0/config/certs
#切换目录
cd /opt/software/elasticsearch-7.16.0
# 修改文件拥有者
chown -R es:es /opt/software/elasticsearch-7.16.0

5、在第一台服务器节点 es-node-1 设置集群多节点通信密钥

# 切换用户
su es
# 签发 ca 证书(过程中需按两次回车键)
bin/elasticsearch-certutil ca
# 用 ca 证书签发节点证书(过程中需按三次回车键)
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
# 将生成的证书文件移动到 config/certs 目录中
mv elastic-stack-ca.p12 elastic-certificates.p12 config/certs

  


6、在第一台服务器节点 es-node-1 设置集群多节点 HTTP 证书

# 签发 Https 证书
bin/elasticsearch-certutil http

以下是每次要求输入时,需要输入的内容 


指定证书路径





无需输入密码





设置证书失效时间





无需每个节点配置证书


输出连接到第一个节点的所有主机名称





输出连接到第一个节点的所有主机
IP
地址





不改变证书选项配置


不给证书加密,按键输入两次回车





解压刚刚生成的
zip




# 解压文件
unzip elasticsearch-ssl-http.zip


将解压后的证书文件移动到
config/certs
目录中



# 移动文件
mv elasticsearch/http.p12 kibana/elasticsearch-ca.pem config/certs




7、修改主配置文件:config/elasticsearch.yml


# 设置 ES 集群名称
cluster.name: es-cluster
# 设置集群中当前节点名称
node.name: es-node-1
# 设置数据,日志文件路径
path.data: /opt/software/elasticsearch-7.16.0/data
path.logs: /opt/software/elasticsearch-7.16.0/logs
# 设置网络访问节点
network.host: esLinux1
# 设置网络访问端口
http.port: 9200
# 初始节点
discovery.seed_hosts: ["esLinux1"]
# 安全认证
xpack.security.enabled: true
xpack.security.enrollment.enabled: true
xpack.security.http.ssl:
enabled: true
keystore.path: /opt/software/elasticsearch-7.16.0/config/certs/http.p12
truststore.path: /opt/software/elasticsearch-7.16.0/config/certs/http.p12
xpack.security.transport.ssl:
enabled: true
verification_mode: certificate
keystore.path: /opt/software/elasticsearch-7.16.0/config/certs/elastic-certificates.p12
truststore.path: /opt/software/elasticsearch-7.16.0/config/certs/elastic-certificates.p12
# 此处需注意,es-node-1 为上面配置的节点名称
cluster.initial_master_nodes: ["es-node-1"]
http.host: [_local_, _site_]
ingest.geoip.downloader.enabled: false
xpack.security.http.ssl.client_authentication: none


8、启动ES 

# 启动 ES 软件
bin/elasticsearch

注:

第一次成功启动后,会显示密码,请记住,访问时需要。只有第一次才有!!!

如果 没有注意到或没有找到账号密码,可以设置免密登录:

# Enable security features
xpack.security.enabled: false

✅ Elasticsearch security features have been automatically configured!
✅ Authentication is enabled and cluster connections are encrypted.
ℹ️ Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`):
密码xxxxx
❌ Unable to generate an enrollment token for Kibana instances, try invoking `bin/elasticsearch-create-enrollment-token -s kibana`.
ℹ️ Configure other nodes to join this cluster:
• On this node:
⁃ Create an enrollment token with `bin/elasticsearch-create-enrollment-token -s node`.
⁃ Uncomment the transport.host setting at the end of config/elasticsearch.yml.
⁃ Restart Elasticsearch.
• On other nodes:
⁃ Start Elasticsearch with `bin/elasticsearch --enrollment-token `, using the enrollment token that you generated.

9、 访问服务器节点 https://虚拟机地址:9200


10、修改集群中其他节点的配置文件:config/elasticsearch.yml

证书直接拷贝,其他步骤完全相同,配置文件中修改如下内容即可

# 设置节点名称
node.name: es-node-2
# 设置网络访问主机
network.host: esLinux2


(四)踩坑


1、main ERROR Unable to invoke factory method in class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile

main ERROR Unable to invoke factory method in class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile: java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.RollingFileAppender java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.RollingFileAppender


原因:

在安装elasticsearch时,新建的logs目录是用root用户建的,因此,logs下的文件是root用户权限,因此,将该权限改为非root用户即可


解决方法:修改权限 

su root
cd /opt/software/elasticsearch-7.16.0/
chown -R es ./logs/
chgrp -R es ./logs/



2、被自动killed


原因:

Elasticsearch在启动过程中被自动killed,是内存不够了,由于ES是运行在JVM上,JVM本身除了分配的heap内存以外,还会用到一些堆外(off heap)内存。 在小内存的机器上跑ES,如果heap划分过多,累加上堆外内存后,总的JVM使用内存量可能超过物理内存限制。 如果swap又是关闭的情况下,就会被操作系统oom killer杀掉


解决办法:

修改ES中目录下的config/jvm.options文件


-Xms4g
-Xmx4g
改为
-Xms1g
-Xmx1g


推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文介绍了OkHttp3的基本使用和特性,包括支持HTTP/2、连接池、GZIP压缩、缓存等功能。同时还提到了OkHttp3的适用平台和源码阅读计划。文章还介绍了OkHttp3的请求/响应API的设计和使用方式,包括阻塞式的同步请求和带回调的异步请求。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • Android系统启动过程分析一、Android平台架构首先贴一张Android系统架构图方便理解整个Android架构,这可以让我们从整体上对整个启动流程有个大概认知。可以看出整 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 【Java面试】简单说一下你对序列化和反序列化的理解
    Hi,大家好,我是Mic一个工作4年的粉丝,投了很多简历好不容易接到一个互联网公司的面试邀约。在面试第一轮就被干掉了,原因是对主流互联网技术理解太浅了。其中就有一个这样的问题:“简 ... [详细]
  • 生产环境下JVM调优参数的设置实例
     正文前先来一波福利推荐: 福利一:百万年薪架构师视频,该视频可以学到很多东西,是本人花钱买的VIP课程,学习消化了一年,为了支持一下女朋友公众号也方便大家学习,共享给大家。福利二 ... [详细]
author-avatar
淘气111006
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有